package org.ch00.test02;

/**
 * @author ZJL
 * @date 2025-02-28
 */
public class JavaTeacher extends Teacher{

    public JavaTeacher() {

    }

    /**
     * this 表示对象的引用，它可以引用当前对象的成员
     * 语法：super.成员名称
     * 注意：this 关键字可以省略不写
     * <p>
     * 同时，也可以通过 this 关键字调用当前对象的重载构造方法，
     * 语法：this(参数列表)
     * @param name
     */
    public JavaTeacher(String name) {
        //注意：使用 this 和 super 调用构造方法时，必须放在第一位
        this.setName(name);
        //this(name,"NF");
        //super.setName(name);
    }

    /**
     * super 表示对象的引用，它可以引用父类的成员
     * 语法：super.成员名称
     * <p>
     * 同时，也可以通过 super 关键字调用父类的构造方法，
     * 语法：super(参数列表)
     * @param name
     * @param school
     */
    public JavaTeacher(String name, String school) {
        super(name, school);
    }

    // 覆盖 / 重写父类的方法 - 增强父类的行为 - 功能
    // 重写：子类定于与父类完全一样的方法
    // 方法名相同 && 参数个数相同 && 参数类型相同 && 返回类型相同
    // 子类的访问修饰符必须要比父类的访问修饰符大
    public void teach() {
        //子类扩展的功能
        System.out.println("打开了IDEA...");
        // this 表示当前对象，而 super 表示父类对象的引用
        super.teach();
        // 上完课必须打游戏
        this.playGame();
    }

    /**
     * 子类继承父类，拥有父类的成员
     * 同时，子类也应该具有自己特有的成员
     */
    public void playGame(){
        System.out.println("打游戏...");
    }
}
